import { VuexModule, Module, Action, Mutation, getModule } from 'vuex-module-decorators';
// import { getToken, setToken, removeToken, getCsrf, setCsrf, removeCsrf } from '@/utils/cookies';
import { resetRouter } from '@/router';
import store from '@/store';

/** 用户状态数据接口 */
export interface IUserState {
  /** 用户ID */
  userId: number | null;
  /** 令牌 */
  token: string;
  // /** 用于防范 CSRF 攻击伪造的请求 */
  // csrf: string;
}

/** 用户数据管理 */
@Module({ dynamic: true, store, name: 'User' })
class User extends VuexModule implements IUserState {
  public userId = null;
  public token = '';
  // public token = getToken() || '';
  // public csrf = getCsrf() || '';

  // @Mutation
  // private SET_TOKEN(data: { session: string, token: string }) {
  //   this.token = data.session;
  //   this.csrf = data.token;
  // }
  // @Mutation
  // private RESET_TOKEN() {
  //   this.token = '';
  //   this.csrf = '';
  // }

  // /** 设置用户模块状态数据 */
  // @Action
  // public setup(user: ILoginDataDto) {
  //   const { session, token } = user;
  //   setToken(session);
  //   setCsrf(token);
  //   this.SET_TOKEN({ session, token });
  //   // this.SET_USER_INFO(user);
  // }

  // /** 复位路由与清除令牌 */
  // @Action
  // public ResetRouteAndToken() {
  //   removeToken();
  //   removeCsrf();
  //   resetRouter();
  //   this.RESET_TOKEN();
  // }
}

/** 用户数据管理模块 */
export const UserModule = getModule(User);
